#include "empty.h"

#ifndef __GRAYSCALE_H
#define __GRAYSCALE_H

/*
10 LED
LED-ON——1	LED-OFF——0
想改变0、1代表的电平仅需改变GRAY_Judge里面的判断条件
*/

typedef struct {
    GPIO_Regs *port;
    uint32_t pin;
} LED_TypeDef;

/*-------------- 1 --------------*/
#define LED1_1_PIN	    DL_GPIO_PIN_7	
#define LED1_2_PIN	    DL_GPIO_PIN_20		
#define LED1_3_PIN	    DL_GPIO_PIN_24	
#define LED1_4_PIN	    DL_GPIO_PIN_24
#define LED1_5_PIN	    DL_GPIO_PIN_25	
#define LED1_6_PIN	    DL_GPIO_PIN_26		
#define LED1_7_PIN	    DL_GPIO_PIN_27	
#define LED1_8_PIN	    DL_GPIO_PIN_4
#define LED1_9_PIN	    DL_GPIO_PIN_28	
#define LED1_10_PIN	    DL_GPIO_PIN_31

#define LED1_1_PORT		GPIOA	
#define LED1_2_PORT		GPIOB		
#define LED1_3_PORT		GPIOB	
#define LED1_4_PORT		GPIOA
#define LED1_5_PORT		GPIOA	
#define LED1_6_PORT		GPIOA		
#define LED1_7_PORT		GPIOA	
#define LED1_8_PORT		GPIOA
#define LED1_9_PORT		GPIOA	
#define LED1_10_PORT	GPIOA


/*-------------- 2 --------------*/
// #define LED2_1_PIN	    DL_GPIO_PIN_4	
// #define LED2_2_PIN	    DL_GPIO_PIN_3		
// #define LED2_3_PIN	    DL_GPIO_PIN_2	
// #define LED2_4_PIN	    DL_GPIO_PIN_1
// #define LED2_5_PIN	    DL_GPIO_PIN_0	
// #define LED2_6_PIN	    DL_GPIO_PIN_12		
// #define LED2_7_PIN	    DL_GPIO_PIN_11	
// #define LED2_8_PIN	    DL_GPIO_PIN_10
// #define LED2_9_PIN	    DL_GPIO_PIN_15	
// #define LED2_10_PIN	    DL_GPIO_PIN_12

// #define LED2_1_PORT		GPIOD	
// #define LED2_2_PORT		GPIOD		
// #define LED2_3_PORT		GPIOD	
// #define LED2_4_PORT		GPIOD
// #define LED2_5_PORT		GPIOD	
// #define LED2_6_PORT		GPIOC		
// #define LED2_7_PORT		GPIOC	
// #define LED2_8_PORT		GPIOC
// #define LED2_9_PORT		GPIOA	
// #define LED2_10_PORT	GPIOA


// /*-------------- 3 -------------*/
// #define LED3_1_PIN	    GPIO_PIN_4	
// #define LED3_1_PORT		GPIOE

// /*-------------- 4 -------------*/
// #define LED4_1_PIN	    GPIO_PIN_5	
// #define LED4_1_PORT		GPIOE


uint32_t GRAY1_Judge(GPIO_Regs *GPIOx, uint32_t GPIO_Pin);		//judge state
uint32_t GRAY1_Calc(void);			                                //calculate value of grayscale

// uint32_t GRAY2_Judge(GPIO_Regs *GPIOx, uint32_t GPIO_Pin);
// uint32_t GRAY2_Calc(void);

uint32_t GRAY_multiRead(uint32_t gray_judgeNum[5]);

uint8_t GRAY_Situation(uint32_t GrayNum);

uint8_t Gray_CrossJudge(void);
uint8_t Gray_MidJudge(void);
uint8_t Gray_TJudge(void);		

// uint8_t GRAY3_Judge(void);
// uint8_t GRAY4_Judge(void);

int GRAY_Error(void);

#endif